package com.cyh.core.framework.common.model;

import com.fasterxml.jackson.annotation.JsonIgnore;

import java.io.Serializable;
import java.util.Collection;



/**
 * @Author: yanhang_chen
 * @Date: 2020/9/4 11:17
 */


/**
 * 树形结构接口
 * 主要作用是方便将树菜单的生成封装成公共方法
 * @param <ID> 当前节点数据对象类型
 * @param <E> 继承TreeNode类的子节点对象
 */
public interface TreeNode<ID, E extends TreeNode> extends Serializable {

    /**
     * 获取当前节点id
     *
     * return 获取当前id
     */
    @JsonIgnore
    ID getCurrentNodeId();

    /**
     * 获取父级节点id
     *
     * return 获取父级id
     */
    @JsonIgnore
    ID getParentNodeId();

    /**
     * 添加子节点
     *
     * @param childNode 子节点
     */
    @JsonIgnore
    void addChildNode(E childNode);

    /**
     * 获取子节点
     */
    @JsonIgnore
    Collection<E> getChildNodes();

    /**
     * 设置子节点
     * @param childNodes 子节点集合
     */
    @JsonIgnore
    default void setChildNodes(Collection<E> childNodes){

    }

}

